package Main;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import Calendari.Calendari;
import Configuracio.Config;
import InputYOrdenatPeticiones.ArrayPeticiones;
import InputYOrdenatPeticiones.OrdenarPeticiones;
import ProcessamentPeticions.AssignadorPeticions;
import ProcessamentPeticions.Sala;
import Utilitats.CrearIncidencia;
import Utilitats.EscriureFitxer;

public class Main {

	private static List<String> incidencies = new ArrayList<String>();
	private static String criteriTot = "N", criteriRep = "N";
	
	public static void main(String[] args) {

		if (args.length>0){
			if (Arrays.binarySearch(args, "T") >= 0) criteriTot = "S";
			if (Arrays.binarySearch(args, "R") >= 0) criteriRep = "S";
		}
		
		try {
			Config.crearConfiguraciones();
			
			Sala[] sales; 
			Calendari calSala = new Calendari();
			
			sales = OrdenarPeticiones.generaSalasConPeticionesOrdenadas (ArrayPeticiones.generaArrayPeticiones("ArxiusPeticions/peticions.txt"));
			
			for(Sala sala:sales){			
				calSala =  AssignadorPeticions.AssignarPeticions(sala);
				HTML.EstructuraHTML.generaHTML(sala,calSala);
				//System.out.println("Creado html de "+ sala.getNomSala());
			}
		} catch (Exception e) {
			// Crear incidencia y terminar el programa.
			
			CrearIncidencia.afegirIncidencia(e.getMessage(), incidencies);
			
		}		
		
		EscriureFitxer.escriureFitxer("Sortida/incidencies.log", incidencies);
		
		
	}
	
	public static List<String> getIncidencies(){
		return incidencies;
	}
	
	public static String getCriteriTot(){
		return criteriTot;
	}
	
	public static String getCriteriRep(){
		return criteriRep;
	}	

}
